Device drivers are computer programs that operate within an operating system and are used to operate or control a device attached to a computer. Device drivers communicate with devices that are in communication with the computer. Device drivers can allow a computer program to communicate with devices, including printers, video adapters, keyboards, pointing devices, network adapters, sound cards, storage devices, cameras, and the like.
There are a number of methods for testing device drivers. In some cases, existing test methods involve trial and error techniques that don't often reveal defects, e.g., bugs, of a device driver. For instance, a testing method can involve several steps for testing a device driver operating with particular environment settings, and in such environment settings, no defects may be exposed. Such methods may lead to a premature release of a device driver.
In addition, when driver defects are discovered, existing test methods make it difficult for developers to identify the source of a particular defect. During the testing phase of a driver, for example, a defect may appear but existing methods do not provide contextual information with respect to where an interrupt request packet was in a device stack. In addition to these issues, existing test methods can involve monitoring software that can be unduly burdensome for an operating system. In some cases, when driver testing and monitoring software is too intensive, the testing and monitoring software may be the cause of one or more system failures. Further, existing driver test methods can be difficult to manage, labor-intensive and somewhat unpredictable.
It is with respect to these and other considerations that the disclosure made herein is presented.